<?php

//Carga de modelos necesarios
Load::models('seguridad/usuario', 'seguridad/rol', 'seguridad/permiso', 'seguridad/recurso');
//Carga la libreria ACL2
Load::coreLib('acl2');

class KuAcl {

    protected $adapter;

    /**
     * Carga los roles, rescursos, el usuario y permisos de la base de datos.
     */
    public function cargarPermisos($usuario_id) {

        $this->adapter = Acl2::factory();
        $rol = new Rol();
        $roles = $rol->find();

        foreach ($roles as $value) {
            $permiso = new Permiso();
            $roles_recursos = $permiso->find("conditions: rol_id=$value->id");
            $resources = array();

            foreach ($roles_recursos as $value2) {
                $resources[] = $value2->getRecurso()->url;
            }
            //Establece a que recursos tiene acceso un rol.
            $this->adapter->allow($value->nombre, $resources);
        }

        //Consulta el usuario
        $usuario = new Usuario();
        $usuario1 = $usuario->find($usuario_id);

        $this->adapter->user($usuario1->id, array($usuario1->getRol()->nombre));
        
    }

    /**
     * Verifica que un usuario tenga acceso al recurso determinado.
     * 
     * @param String $resource
     * @param String $user
     * @return boolean 
     */
    public function check($resource, $user) {
        return $this->adapter->check($resource, $user);
    }

}

?>